package com.hq.ims.data.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hq.ims.data.entity.BusiInfo;
import org.apache.ibatis.annotations.MapKey;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 经营信息管理主表 Mapper 接口
 *
 * @author 蒋柏平
 * @since 20241025
 */
public interface BusiInfoMapper extends BaseMapper<BusiInfo> {


    //----------------------------------------------- 公司维度统计 ---------------------------------------------------------------
//
//    /**
//     * 公司维度 : 经营信息发布数量
//     */
//    List<Map> getCompanyStatisticsBusInfoPublishCountByDateType(
//            String dateType,
//            LocalDateTime startDateTime,
//            LocalDateTime endDateTime,
//            List<String> companyIdList,
//            List<String> userIdList
//    );
//
//    /**
//     * 公司维度 : 发布了经营信发布的公司数量
//     */
//    List<Map> getCompanyStatisticsBusInfoPublishCompanyCountByDateType(
//            String dateType,
//            LocalDateTime startDateTime,
//            LocalDateTime endDateTime,
//            List<String> companyIdList,
//            List<String> userIdList
//    );
//
//    /**
//     * 公司维度 : 经营信息被接收的数量
//     */
//    List<Map> getCompanyStatisticsBeReceiveCountByDateType(
//            String dateType,
//            LocalDateTime startDateTime,
//            LocalDateTime endDateTime,
//            List<String> companyIdList,
//            List<String> userIdList
//    );

    /**
     * 日期维度 -  作为接收方统计反馈已投标的金额信息 已投标的经营信预估产值 * 分配规则
     */
    @MapKey(value = "dateStr")
    List<Map> getPublisherFeedbackBusInfoCountByDateType(
            String dateType,
            LocalDateTime startDateTime,
            LocalDateTime endDateTime,
            List<String> companyIdList,
            List<String> userIdList
    );

    /**
     * 日期维度 - 作为接收方统计反馈已投标的金额信息 已投标的经营信预估产值 * 分配规则
     */
    @MapKey(value = "dateStr")
    List<Map> getReceiveFeedbackBusInfoMoneyByDateType(
            String dateType,
            LocalDateTime startDateTime,
            LocalDateTime endDateTime,
            List<String> companyIdList,
            List<String> userIdList
    );



    /**
     * 日期维度 - 作为接收方统计反馈信息已投标的企业
     */
    @MapKey(value = "dateStr")
    List<Map> getReceiveFeedbackBusInfoCountByDateType(
            String dateType,
            LocalDateTime startDateTime,
            LocalDateTime endDateTime,
            List<String> companyIdList,
            List<String> userIdList
    );

    /**
     * 用户维度 - 作为接收方统计反馈信息已投标的数量
     */
    @MapKey(value = "userName")
    List<Map> getUserReceiveFeedbackBusInfoCountByDateType(String name, LocalDateTime startDateTime, LocalDateTime endDateTime, String companyId, String userId);

    /**
     * 用户维度 - 作为接收方统计反馈信息已投标的数量
     */
    @MapKey(value = "userName")
    List<Map> getUserReceiveFeedbackBusInfoMoneyByDateType(String name, LocalDateTime startDateTime, LocalDateTime endDateTime, String companyId, String userId);

    //----------------------------------------------- 个人维度统计 ---------------------------------------------------------------
}
